/*
 * IndiceDimensiones.h
 *
 *  Created on: May 20, 2012
 *      Author: lucasj
 */

#ifndef INDICEDIMENSIONES_H_
#define INDICEDIMENSIONES_H_

// Indice Dimensiones: Contiene todos los índices
// por dimensión. Es un multimap con dos claves:
// dimensión y el código donde está el dato.

#include <sstream>
#include "IndiceResultado.h"
#include "Validador.h"
#include "Consulta.h"

typedef std::multimap<std::string, int>::iterator iteradorDimension;

namespace DimensionIndex {

class IndiceDimensiones {
private:
	std::multimap<std::string, int> map;
	Validador& validator;
	void obtenerSiguientePosicion(unsigned int
					    &posAnterior, unsigned int &posActual, std::string &linea);
public:
	IndiceDimensiones(Validador& validator);
	virtual ~IndiceDimensiones(void);
	void Cargar(std::string &linea, int cod);
	void Buscar(std::string &valor, ResultIndex::IndiceResultado &result);
	friend std::ostringstream& operator<<(std::ostringstream& oss, IndiceDimensiones &indice);
	};
std::ostringstream& operator<<(std::ostringstream& oss, IndiceDimensiones &indice);
}
#endif
